# 编译器设置
CC := gcc
CFLAGS :=  -I. # -Wall -Wextra
LDFLAGS := 

# 文件查找设置
SRC_DIR := .
BUILD_DIR := build
TARGET := run_test

# 递归查找所有.c文件（排除build目录）
SRCS := $(shell find $(SRC_DIR) -type d -name "$(BUILD_DIR)" -prune -o -type f -name '*.c' -print)
OBJS := $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%.o,$(SRCS))
DEPS := $(OBJS:.o=.d)

# 默认目标
all: $(TARGET)

# 生成可执行文件
$(TARGET): $(OBJS)
	$(CC) $(LDFLAGS) $^ -o $@

# 模式规则：编译.c文件并生成依赖
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c
	@mkdir -p $(@D)
	$(CC) $(CFLAGS) -MMD -MP -c $< -o $@

# 包含自动生成的依赖文件
-include $(DEPS)

# 清理目标
clean:
	rm -rf $(BUILD_DIR) $(TARGET)

.PHONY: all clean